/**
 * 游戏地图类
 */
class GameMap extends AcGameObject {
    constructor(playground) {
        // 调用父类的构造函数
        super();
        // 将传入的playground保存到对象中
        this.playground = playground;
        // 创建一个canvas元素
        // 这里修改的原因是canvas需要被监听，而不是window被监听
        this.$canvas = $(`<canvas tabindex=0></canvas>`);
        // 将需要被操作的canvas元素保存到ctx中
        this.ctx = this.$canvas[0].getContext('2d');
        // 设置canvas的宽度和高度
        this.ctx.canvas.width = this.playground.width;
        this.ctx.canvas.height = this.playground.height;
        // 将canvas元素添加到playground中
        this.playground.$playground.append(this.$canvas);
    }

    start() {
        // 需要加上这一句
        this.$canvas.focus();
    }

    resize() {
        this.ctx.canvas.width = this.playground.width;
        this.ctx.canvas.height = this.playground.height;
        // 为了避免渲染不够及时导致地图为渐变，
        // 需要在每次改变大小之后都强制渲染一遍
        this.ctx.fillStyle = "rgba(0, 0, 0, 1)";
        this.ctx.fillRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);
    }

    update() {
        // 每次更新时，都将黑色绘制到地图上
        this.render();
    }

    // 将黑色绘制到地图
    render() {
        // 设置填充颜色
        this.ctx.fillStyle = "rgba(0, 0, 0, 0.2)";
        // 坐标形式为(width, height)
        this.ctx.fillRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);
    }
}
